#include <iostream>
#include <cmath>
using namespace std;
//数学知识 -- 一个数拆成 3*3*3*...*3 最大 如果剩下1 就差成 3*3*3*...*2*2
class Solution
{
public:
    int cuttingRope(int n)
    {
        // 特殊情况
        if (n <= 3)
        {
            if (n == 3)
                return 2;
            return 1;
        }
        // 尽量分成 3*3*3*3
        // 如果是最后剩了4 就分成2*2 而不是 1*3
        int x = n / 3;
        n %= 3;
        int res = 0;
        if (n == 1)
        {
            res = pow(3, x - 1);
            res *= 4;
        }
        else
        {
            res = pow(3, x);
            if (n)
                res *= n;
        }
        return res;
    }
};